﻿// ----------------------------------------------------------------------------
// debugconsole.h
// ----------------------------------------------------------------------------
/*
 Description : デバッグ出力用コンソール. マクロを通じてのみ利用してください.
 */
#pragma once
#include <cstdarg>
#include <cwchar>

namespace fw
{
    // デバッグコンソール出力用printf代替関数
    int fw_printf	(const char* format, ...);
    int fw_wprintf	(const wchar_t* format, ...);
    int fw_vprintf	(const char* format, va_list list);
    int fw_vwprintf	(const wchar_t* format, va_list list);
    
    // printf出力先を変更するためのコールバック関数 
    typedef int (*OutputStringCallback)(const char* string);
    typedef int (*OutputStringCallbackW)(const wchar_t* wstring);
    
    void SetOutputStringCallback(OutputStringCallback callback);
    void SetOutputStringCallbackW(OutputStringCallbackW callback);

} // namespace fw

#if !USING(FW_DISABLE_DEBUG_CONSOLE)

#define FW_PRINTF	::fw::fw_printf
#define FW_WPRINTF	::fw::fw_wprintf
#define FW_VPRINTF	::fw::fw_vprintf
#define FW_VWPRINTF	::fw::fw_vwprintf

#else

#define FW_PRINTF(...)
#define FW_WPRINTF(...)
#define FW_VPRINTF(...)
#define FW_VWPRINTF(...)


#endif // FW_DISABLE_DEBUG_CONSOLE
